if (extension.state != ExtensionState.ENABLED)
return;
- let extensionState = extensionStateObjs[uuid];
-
// "Rebase" the extension order by disabling and then enabling extensions
// in order to help prevent conflicts.
for (let i = 0; i < orderReversed.length; i++) {
let uuid = orderReversed[i];
try {
- extensionStateObjs[uuid].disable();
+ ExtensionUtils.extensions[uuid].stateObj.disable();
} catch(e) {
logExtensionError(uuid, e.toString());
}
}
try {
- extensionState.disable();
+ extension.stateObj.disable();
} catch(e) {
logExtensionError(uuid, e.toString());
return;
for (let i = 0; i < order.length; i++) {
let uuid = order[i];
try {
- extensionStateObjs[uuid].enable();
+ ExtensionUtils.extensions[uuid].stateObj.enable();
} catch(e) {
logExtensionError(uuid, e.toString());
}
if (!extension)
return;
- if (extension.state == ExtensionState.INITIALIZED) {
- loadExtension(extension.dir, extension.type, true);
- return;
- }
+ if (extension.state == ExtensionState.INITIALIZED)
+ initExtension(uuid);
if (extension.state != ExtensionState.DISABLED)
return;
return;
}
- if (!enabled) {
+ if (enabled) {
+ initExtension(uuid);
+ if (extension.state == ExtensionState.DISABLED)
+ enableExtension(uuid);
+ } else {
extension.state = ExtensionState.INITIALIZED;
- return;
}
+ _signals.emit('extension-state-changed', extension);
+ global.log('Loaded extension ' + uuid);
+}
+
+function initExtension(uuid) {
+ let extension = ExtensionUtils.extensions[uuid];
+ let dir = extension.dir;
+
+ if (!extension)
+ throw new Error("Extension was not properly created. Call loadExtension first");
+
let extensionJs = dir.get_child('extension.js');
if (!extensionJs.query_exists(null)) {
logExtensionError(uuid, 'Missing extension.js');
extension.state = ExtensionState.DISABLED;
- enableExtension(uuid);
-
_signals.emit('extension-loaded', uuid);
- _signals.emit('extension-state-changed', extension);
- global.log('Loaded extension ' + uuid);
}
function onEnabledExtensionsChanged() {